home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / vbcc / machines / amiga68k / libsrc / stdio / fopen.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-19  |  1014 b   |  36 lines

  1. #include <stddef.h>
  2. #include <stdio.h>
  3. #include <limits.h>
  4. #include <stdarg.h>
  5.  
  6. #include <dos/dos.h>
  7.  
  8. extern FILE *_firstfile,*_lastfile;
  9.  
  10. /*  oeffnet Dateien */
  11. /*  noch sehr eingeschraenkt    */
  12. FILE *fopen(const char *name,const char *mode)
  13. {
  14.     FILE *f;long amigamode=0;int append;
  15.     if(*mode=='r') amigamode=MODE_OLDFILE; else amigamode=MODE_NEWFILE;
  16.     if(*mode=='a') append=1; else append=0;
  17.     if(!(f=(FILE *)malloc(sizeof(FILE)))) return(0);
  18.     f->count=0;
  19.     f->base=0;
  20.     f->bufsize=0;
  21.     f->next=0;
  22.     if(*mode=='r') f->flags=_READABLE; else f->flags=_WRITEABLE;
  23.     if(*mode=='b') mode++;
  24.     if(*mode=='+') {f->flags|=_READABLE|_WRITEABLE;amigamode=MODE_READWRITE;}
  25.     f->filehandle=(char *)Open(name,amigamode);
  26.     if(!f->filehandle){free(f);return(0);}
  27.     if(IsInteractive(f->filehandle)) f->flags|=_UNBUF;
  28.     if(_lastfile){
  29.         _lastfile->next=f;f->prev=_lastfile;_lastfile=f;
  30.     }else{
  31.         _firstfile=_lastfile=f;
  32.     }
  33.     if(append) fseek(f,0,SEEK_END);
  34.     return(f);
  35. }
  36.